package com.iwdnb.gkgz.application.service;

import java.util.List;

import com.iwdnb.gkgz.application.model.request.AddStrategyTradeStockDataRequest;
import com.iwdnb.gkgz.application.model.vo.StrategyTradeScore;
import com.iwdnb.gkgz.application.model.vo.StrategyTradeScoreInfo;
import com.iwdnb.gkgz.application.model.vo.StrategyTradeStatisticData;
import com.iwdnb.gkgz.common.model.dto.Stock;
import com.iwdnb.gkgz.common.model.dto.StrategyImageStatisticDTO;
import com.iwdnb.gkgz.common.model.dto.StrategyTradeDTO;

public interface StrategyTradeService {

    List<StrategyTradeDTO> queryStrategyTradeList(String code, String uuid);

    void doStrategyTrade();

    /**
     * 同步策略交易实时价格
     *
     * @param stock
     */
    void syncStrategyStockPrice(Stock stock);

    /**
     * 根据股票策略添加对应的股票买点数据
     *
     * @param request
     */
    void addStrategyTradeStockData(AddStrategyTradeStockDataRequest request);

    /**
     * 股票策略回测
     *
     * @param uuid
     */
    void doBackStrategyTrade(String uuid, String code);

    void deleteStrategyTrades(String uuid, List<String> codeList);

    List<StrategyImageStatisticDTO> doStockImageStatistic(String strategy, String profitType);

    /**
     * 屠龙刀数据统计
     *
     * @param groups
     * @param cacheFlag
     * @return
     */
    List<StrategyTradeStatisticData> statisticTradeList(List<String> groupList, String loadDataFlag);

    /**
     * 屠龙刀初始化策略交易评分
     *
     * @param groups
     * @return
     */
    List<StrategyTradeScore> initTradeScore(List<String> groupList);

    /**
     * 屠龙刀计算策略交易评分
     *
     * @param groups
     * @return
     */
    StrategyTradeScoreInfo calculateTradeScore(StrategyTradeDTO strategyTradeDTO,List<StrategyTradeScore> tradeScoreList);

    /**
     * 屠龙刀计算全部策略交易评分
     *
     * @param groups
     * @return
     */
    void calculateAllTradeScore();
}
